// obj需要传入一个对象，最少需要传递一个属性url,可选参数data,method
function myPromiseAjax(obj) {

    return new Promise((resolve, reject) => {
        // 定义默认对象，中间存放默认值
        let defaultOption = {
            originPath: '',
            method: 'get',
            // 是将obj对象进行扩展，将键值对重新放到defaultOption;如果有method属性，会将原本的method属性覆盖掉
            ...obj
        }

        let { data: tempParams, method, url, originPath } = defaultOption


        let params = '';
        if (tempParams) {
            Object.keys(tempParams).forEach(key => params += `${key}=${tempParams[key]}&`)
            params = params.slice(0, -1);

        }

        let xhr = new XMLHttpRequest()
        if (method.toLowerCase() === 'get') {
            if (params === '') {
                xhr.open(method, originPath + url);
                xhr.send();
            } else {
                xhr.open(method, originPath + url + '?' + params);
                xhr.send();
            }

        } else if (method.toLowerCase() === 'post') {
            xhr.open(method, originPath + url)
            xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded')
            xhr.send(params);
        }

        xhr.onreadystatechange = function () {
            if (this.readyState === 4) {
                if (this.status === 200) {

                    resolve(JSON.parse(this.responseText));
                } else {

                    reject('请求失败!')

                }
            }
        }
    })
}

